package mapper;

import entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.context.annotation.Bean;
import vo.DepartmentVo;
import vo.UserVo;

import java.util.List;

public interface UserMapper {

    DepartmentVo findDepartmentVoById(Integer id);

    List<UserVo> findUserDepartment();

    List<User> selectUserByIds(@Param("ids") Integer...ids);
    /**
     * 根据用户传过来的参数更新用户信息
     * @return
     */
Integer updateUserInfo(User user);

List<User> findUserByParams(
        @Param("username") String username,
        @Param("age") Integer age,
        @Param("phone") String phone
);
    /**
     * 更具用户传过来的id动态删除用户信息
     * @param ids
     * @return
     */
    Integer deleteUserByIds(@Param("ids") Integer...ids);
    /**
     * 根据用户id删除用户信息
     */
    @Delete("delete from t_user where id=#{id}")
    Integer deleteUserById(Integer id);
    /**
     * 优化更新sql
     * 指定修改哪个就修改哪个
     */
    //@Update("update t_user set age=#{arg0} where id=#{arg1}")
    //Integer updateUserById( Integer id, Integer age);
    @Update("update t_user set age=#{id} where id=#{age}")
    Integer updateUserById( @Param("id") Integer id,@Param("age") Integer age);
    /**
     * 更新用户信息
     */
    @Update("update t_user set username=#{username},password=#{password}," +
            "age=#{age},phone=#{phone},email=#{email} where id=#{id}")
    Integer updateUser(User user);
    /**
     * 插入用户信息
     */
    @Insert("insert into t_user(username,password,age,phone,email) "+
            "values(#{username},#{password},#{age},#{phone},#{email})")
    Integer insertUser(User user);
    /**
     * 查询所有用户信息
     */
    @Select("select id,username,password,age,phone,email from t_user")
    List<User> findAllUser();
    /**
     * 根据id查询用户信息
     * #{}是mybatis框架的占位符，相当于jdbc中使用的？
     * 可以防止sql注入攻击
     */
    @Select("select id,username,password,age,phone,email from t_user where id=#{id}")
    User findUserById(Integer id);
}
